mex matlab 与C语言的简单使用 |
您所在的位置:网站首页 › matlab mex命令 › mex matlab 与C语言的简单使用 |
使用mex在matlab中调用C语言的函数,简单记录一下
1.在同一个文件夹下新建.txt,修改为.c,在vs中打开进行编译;在同一个文件夹下新建matlab的文件,调用C语言的主函数
matlab中输入mex -g swim_main.c % 暂时编译只使用这个文件即可,每次修改需要重新编译 编译成功:>> mex -g swim_main.c 使用 'MinGW64 Compiler (C)' 编译。 MEX 已成功完成。 若编译不成功,查看代码是否有错误,前提是安装了mex, setenv('MW_MINGW64_LOC','C:\TDM-GCC-64') % 按安装好后还需要在matlab中运行这句话,配置一下环境 4.调用程序swim_mexFunction.m中编写 swim_main(0,0); % C语言中函数的入口,运行文件运行swim_main(0,0),会执行C代码; 关于程序的数据和输出,比如在运行函数是[a1,a2,a3,a4]=swim_main(x, y, z, norm,1); % 这种形式nrhs=5,输入的个数; nlhs=4,输出的个数。程序自动识别,不需要指定输入输出个数。 5.将程序运行的多个结果传递出matlab函数 void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) { float *filter_x, *filter_y, *filter_z; ACC_DATA_T* XYZ_filtered; DealSwimData(x, y, z, &XYZ_filtered); plhs[0] = mxCreateNumericMatrix(1, 1, mxSINGLE_CLASS, mxREAL); plhs[1] = mxCreateNumericMatrix(1, 1, mxSINGLE_CLASS, mxREAL); plhs[2] = mxCreateNumericMatrix(1, 1, mxSINGLE_CLASS, mxREAL); /* 后面参数不同,输出数据的类型不同*/ filter_x = mxGetPr(plhs[0]); filter_y = mxGetPr(plhs[1]); filter_z = mxGetPr(plhs[2]); *filter_x = XYZ_filtered->x; //将这三个数据传递出去 *filter_y = XYZ_filtered->y; *filter_z = XYZ_filtered->z; }matlab里面的代码为 for j=1:length(xdata) [xfilter(j), yfilter(j), zfilter(j)] = swim_main(0,xdata(j),ydata(j),zdata(j)); % C语言中函数的入口,运行文件 end.. |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |